﻿using System;
using System.Collections.Generic;
using System.Data.Objects;
using System.Linq;
using System.Web;

namespace TrainingRequest.Models
{
    /// <summary>
    /// Класс для работы с коллекциями объектов из базы данных
    /// </summary>
    public static class DB
    {
        ///// <summary>
        ///// Коллекции сущностей базы данных
        ///// </summary>
        //private static CRMEntities _entities;

        ///// <summary>
        ///// Коллекции сущностей базы данных
        ///// </summary>
        //public static CRMEntities Entities
        //{
        //    get
        //    {
        //        if (_entities == null)
        //        {
        //            _entities = new CRMEntities();
        //        }
        //        return _entities;
        //    }
        //    set { _entities = value; }
        //}

        ///// <summary>
        ///// Сохранение в базу
        ///// </summary>
        //public static void Save()
        //{
        //    try
        //    {
        //        Entities.SaveChanges();
        //    }
        //    catch
        //    {
        //        Entities = new CRMEntities();
        //    }
        //}

        //#region TrainingsCourses

        ///// <summary>
        ///// Список учебных курсов
        ///// </summary>
        //public static ObjectSet<TrainingsCourses> TrainingsCourses
        //{
        //    get { return Entities.TrainingsCourses; }
        //}

        //public static List<TrainingsCourses> GetTrainingsCoursesNames()
        //{
        //    return null;
        //}
        
        //#endregion
        
        //#region TrainingsSchedules

        ///// <summary>
        ///// Расписание учебных курсов
        ///// </summary>
        //public static ObjectSet<TrainingsSchedules> TrainingsSchedules
        //{
        //    get { return Entities.TrainingsSchedules; }
        //}

        ///// <summary>
        ///// Получить рубрику по Id
        ///// </summary>
        ///// <param name="idTrainingsSchedule">Id рубрики</param>
        ///// <returns>рубрика</returns>
        //public static TrainingsSchedules GetTrainingsSchedulebyId(int idTrainingsSchedule)
        //{
        //    TrainingsSchedules _result = null;
        //    foreach (TrainingsSchedules trainingsSchedule in TrainingsSchedules)
        //    {
        //        if (trainingsSchedule.IdTrainingsSchedule == idTrainingsSchedule)
        //        {
        //            _result = trainingsSchedule;
        //            break;
        //        }
        //    }
        //    return _result;
        //}

        ///// <summary>
        ///// Возвращает расписание выездных курсов и вебинаров
        ///// </summary>
        ///// <returns></returns>
        //public static List<TrainingsSchedules> GetTrainingsSchedulesTable()
        //{
        //    var result = new List<TrainingsSchedules>();
        //    foreach (var schedule in TrainingsSchedules)
        //    {
        //        if(schedule.PlannedDate > DateTime.Now)
        //        {
        //            if(schedule.IdTrainingCoursesStatus > 2 && schedule.IdTrainingCoursesStatus < 6)
        //            {
        //                if(schedule.TrainingsCourses != null)
        //                {
        //                    if(schedule.IdTrainingCoursesType == 1 || schedule.IdTrainingCoursesType == 3)
        //                    {
        //                        result.Add(schedule);
        //                    }
        //                }
        //            }
        //        }
        //    }
        //    return result;
        //}

        //#endregion

        //#region TrainingsPlaces

        ///// <summary>
        ///// Расписание учебных курсов
        ///// </summary>
        //public static ObjectSet<TrainingsPlaces> TrainingsPlaces
        //{
        //    get { return Entities.TrainingsPlaces; }
        //}

        //#endregion

        //#region TrainingsRequests

        ///// <summary>
        ///// Расписание учебных курсов
        ///// </summary>
        //public static ObjectSet<TrainingsRequests> TrainingsRequests
        //{
        //    get { return Entities.TrainingsRequests; }
        //}

        ///// <summary>
        ///// Возвращает заявку по ID
        ///// </summary>
        ///// <param name="requestId"></param>
        ///// <returns></returns>
        //public static TrainingsRequests GetTrainingsRequestesById(int requestId)
        //{
        //    TrainingsRequests _result = null;
        //    foreach (TrainingsRequests trainigRequests in TrainingsRequests)
        //    {
        //        if (trainigRequests.IdTrainingsRequest == requestId)
        //        {
        //            _result = trainigRequests;
        //            break;
        //        }
        //    }
        //    return _result;
        //}

        ///// <summary>
        ///// Возвращает список заявок, прикрепленных к выбранному расписанию.
        ///// </summary>
        ///// <param name="scheduleId"></param>
        ///// <returns>список заявок или null</returns>
        //public static List<TrainingsRequests> GetTrainingsRequestesByScheduleId(int scheduleId)
        //{
        //    var result = new List<TrainingsRequests>();
        //    foreach (var request in TrainingsRequests)
        //    {
        //        if (request.IdTrainingsSchedule == scheduleId)
        //            result.Add(request);
        //    }
        //    return result.Count == 0 ? null : result;
        //}

        ///// <summary>
        ///// Добавление заявки в базу
        ///// </summary>
        ///// <param name="trainingsRequestsItem"></param>
        //public static void TrainingsRequestsInsert(TrainingsRequests trainingsRequestsItem)
        //{
        //    DB.FillTrainingsRequest(trainingsRequestsItem);
        //    Entities.TrainingsRequests.AddObject(trainingsRequestsItem);
        //    DB.Save();
        //}

        ///// <summary>
        ///// Обновление заявки
        ///// </summary>
        ///// <param name="trainingsRequestsItem"></param>
        //public static void TrainingsRequestsUpdate(TrainingsRequests trainingsRequestsItem)
        //{
        //    TrainingsRequests trainingsRequestsUpdate =
        //        DB.GetTrainingsRequestesById(trainingsRequestsItem.IdTrainingsRequest);
        //    if (trainingsRequestsUpdate != null)
        //    {
        //        trainingsRequestsUpdate.IdCustomer = trainingsRequestsItem.IdCustomer;
        //        trainingsRequestsUpdate.IdTrainingsCourse = trainingsRequestsItem.IdTrainingsCourse;
        //        trainingsRequestsUpdate.IdTrainingsRequestsStatus = trainingsRequestsItem.IdTrainingsRequestsStatus;
        //        trainingsRequestsUpdate.IdTrainingsSchedule = trainingsRequestsItem.IdTrainingsSchedule;
        //        trainingsRequestsUpdate.IdLegalEntity = trainingsRequestsItem.IdLegalEntity;
        //        trainingsRequestsUpdate.IdContact = trainingsRequestsItem.IdContact;
        //        trainingsRequestsUpdate.IdUser = trainingsRequestsItem.IdUser;

        //        trainingsRequestsUpdate.RequestDate = trainingsRequestsItem.RequestDate;
        //        trainingsRequestsUpdate.Company = trainingsRequestsItem.Company;
        //        trainingsRequestsUpdate.ContactName = trainingsRequestsItem.ContactName;
        //        trainingsRequestsUpdate.ContactPhone = trainingsRequestsItem.ContactPhone;
        //        trainingsRequestsUpdate.ContactEmail = trainingsRequestsItem.ContactEmail;
        //        trainingsRequestsUpdate.Comments = trainingsRequestsItem.Comments;
        //        trainingsRequestsUpdate.FirstDate = trainingsRequestsItem.FirstDate;
        //        trainingsRequestsUpdate.LastDate = trainingsRequestsItem.LastDate;
        //        trainingsRequestsUpdate.Reason = trainingsRequestsItem.Reason;

        //        trainingsRequestsUpdate.DateOfAcceptMail = trainingsRequestsItem.DateOfAcceptMail;
        //        trainingsRequestsUpdate.DateOfDeclineMail = trainingsRequestsItem.DateOfDeclineMail;
        //        trainingsRequestsUpdate.DateOfManagerMail = trainingsRequestsItem.DateOfManagerMail;
        //        trainingsRequestsUpdate.DateOfRegisterMail = trainingsRequestsItem.DateOfRegisterMail;

        //        DB.Save();
        //    }
        //}

        ///// <summary>
        ///// Обновление плановой заявки с участниками в базе.
        ///// </summary>
        ///// <param name="requestUpdate"></param>
        ///// <param name="participantsListUpdate"></param>
        //public static void TrainingsRequestUpdate(TrainingsRequests requestUpdate, List<TrainingsParticipants> participantsListUpdate)
        //{
        //    //получить список участников заявки
        //    var oldList = DB.GetTrainingsParticipantsByRequest(requestUpdate);
        //    if (oldList != null)
        //    {
        //        //Лист ID участников на удаление
        //        var delIdList = new List<int>();
        //        //Лист ID обновленных участников
        //        var updateIdList = new List<int>();
        //        foreach (var item in participantsListUpdate)
        //        {
        //            if (item.IdTrainingsRequest > 0)
        //                updateIdList.Add(item.IdTrainingsParticipant);
        //        }

        //        if (oldList.Count > 0)
        //        {
        //            foreach (var item in oldList)
        //            {
        //                if (!updateIdList.Contains(item.IdTrainingsParticipant))
        //                {
        //                    DB.TrainingsParticipantDelete(item);
        //                }
        //            }
        //            ////удаление участников, отсутствующих в номос списке
        //            //foreach (var item in oldList)
        //            //{
        //            //    if (!participantsListUpdate.Contains(item))
        //            //    {
        //            //        //удалить участника
        //            //        //DB.TrainingsParticipantDelete(item);
        //            //    }
        //            //}
        //        }
        //    }

        //    foreach (var item in participantsListUpdate)
        //    {
        //        //обновить существующих участников
        //        if (item.IdTrainingsRequest > 0)
        //        {
        //            DB.TrainingsParticipantsUpdate(item);
        //        }

        //        //добавить новых участников к заявке
        //        if (item.IdTrainingsRequest == 0)
        //        {
        //            DB.TraningsParticipantsAddToRequest(item, requestUpdate.IdTrainingsRequest);
        //        }
        //    }

        //    //обновить заявку
        //    DB.TrainingsRequestsUpdate(requestUpdate);
        //}

        ///// <summary>
        ///// Удаление заявки на обучение вместе со списком участников
        ///// </summary>
        ///// <param name="requestItem"></param>
        //public static void TrainingsRequestsDelete(TrainingsRequests requestItem)
        //{
        //    if (requestItem != null)
        //    {
        //        var participantsList = DB.GetTrainingsParticipantsByRequest(requestItem);
        //        if (participantsList != null)
        //        {
        //            foreach (var item in participantsList)
        //            {
        //                if (item != null)
        //                    DB.TrainingsParticipantDelete(item);
        //            }
        //        }
        //        TrainingsRequests.DeleteObject(requestItem);
        //        DB.Save();
        //    }
        //}

        ///// <summary>
        ///// Заполняет пустыми строками нулевые значения
        ///// </summary>
        ///// <param name="requestItem"></param>
        //public static void FillTrainingsRequest(TrainingsRequests requestItem)
        //{
        //    if (requestItem == null) return;
        //    if (requestItem.ContactName == null)
        //        requestItem.ContactName = "";
        //    if (requestItem.ContactPhone == null)
        //        requestItem.ContactPhone = "";
        //    if (requestItem.ContactEmail == null)
        //        requestItem.ContactEmail = "";
        //    if (requestItem.Comments == null)
        //        requestItem.Comments = "";
        //    if (requestItem.Company == null)
        //        requestItem.Company = "";
        //    if (requestItem.Reason == null)
        //        requestItem.Reason = "";
        //}

        //#endregion

        //#region TraningsParticipants

        //public static ObjectSet<TrainingsParticipants> TraningsParticipants
        //{
        //    get { return Entities.TrainingsParticipants; }
        //}

        ///// <summary>
        ///// Получить участника по Id
        ///// </summary>
        ///// <param name="id"></param>
        ///// <returns></returns>
        //public static TrainingsParticipants GetTrainingsParticipantsById(int id)
        //{
        //    TrainingsParticipants _result = null;
        //    foreach (TrainingsParticipants trainingParticipant in TraningsParticipants)
        //    {
        //        if (trainingParticipant.IdTrainingsParticipant == id)
        //        {
        //            _result = trainingParticipant;
        //            break;
        //        }
        //    }
        //    return _result;
        //}

        ///// <summary>
        ///// Обновление участника
        ///// </summary>
        ///// <param name="participantItem"></param>
        //public static void TrainingsParticipantsUpdate(TrainingsParticipants participantItem)
        //{
        //    if (participantItem != null)
        //    {
        //        TrainingsParticipants participantUpdate = DB.GetTrainingsParticipantsById(participantItem.IdTrainingsParticipant);
        //        if (participantUpdate != null)
        //        {
        //            participantUpdate.ParticipantName = participantItem.ParticipantName;
        //            participantUpdate.ParticipantPosition = participantItem.ParticipantPosition;
        //            participantUpdate.IdUser = participantItem.IdUser;
        //            participantUpdate.IdTrainingsRequest = participantItem.IdTrainingsRequest;
        //            participantUpdate.IdTrainingsParticipantsStatus = participantItem.IdTrainingsParticipantsStatus;
        //            //var status = DB.GetTrainingParticipantsStatusbyId(participantItem.IdTrainingsParticipantsStatus);
        //            //if(status != null)
        //            //{
        //            //    participantUpdate.TrainingParticipantsStatuses = status;
        //            //}

        //            DB.Save();
        //        }
        //    }
        //}

        ///// <summary>
        ///// Добавление участника к заявке c записью в базу
        ///// </summary>
        ///// <param name="traningsParticipantItem"></param>
        ///// <param name="traningsRequestId"></param>
        //public static void TraningsParticipantsAddToRequest(TrainingsParticipants traningsParticipantItem, int traningsRequestId)
        //{

        //    traningsParticipantItem.IdTrainingsParticipant = 0;
        //    if (traningsParticipantItem.IdUser == null)
        //        traningsParticipantItem.IdUser = "";
        //    if (traningsParticipantItem.ParticipantName == null)
        //        traningsParticipantItem.ParticipantName = "";
        //    if (traningsParticipantItem.ParticipantPosition == null)
        //        traningsParticipantItem.ParticipantPosition = "";
        //    traningsParticipantItem.IdTrainingsRequest = traningsRequestId;
        //    Entities.TrainingsParticipants.AddObject(traningsParticipantItem);
        //    DB.Save();
        //}

        ///// <summary>
        ///// Добавление списка участников к заявке
        ///// </summary>
        ///// <param name="traningsParticipantList"></param>
        ///// <param name="traningsRequestItem"></param>
        ///// <returns></returns>
        //public static TrainingsRequests TraningsParticipantsListAddToRequest(List<TrainingsParticipants> traningsParticipantList, TrainingsRequests traningsRequestItem)
        //{
        //    foreach (var participantItem in traningsParticipantList)
        //    {
        //        if (participantItem != null)
        //        {
        //            participantItem.IdTrainingsParticipant = -1;
        //            if (participantItem.IdUser == null)
        //                participantItem.IdUser = "";
        //            if (participantItem.ParticipantName == null)
        //                participantItem.ParticipantName = "";
        //            if (participantItem.ParticipantPosition == null)
        //                participantItem.ParticipantPosition = "";
        //            traningsRequestItem.TrainingsParticipants.Add(participantItem);
        //        }
        //    }
        //    return traningsRequestItem;
        //}

        ///// <summary>
        ///// Возвращает список участников заявки на обучение
        ///// </summary>
        ///// <param name="request"></param>
        ///// <returns></returns>
        //public static List<TrainingsParticipants> GetTrainingsParticipantsByRequest(TrainingsRequests request)
        //{
        //    if (request != null)
        //    {
        //        var result = new List<TrainingsParticipants>();
        //        foreach (var item in DB.TraningsParticipants)
        //        {
        //            if (item.IdTrainingsRequest == request.IdTrainingsRequest)
        //            {
        //                result.Add(item);
        //            }
        //        }
        //        if (result.Count > 0)
        //            return result;
        //    }
        //    return null;
        //}

        ///// <summary>
        ///// Удаление участника из базы
        ///// </summary>
        ///// <param name="participantDel"></param>
        //public static void TrainingsParticipantDelete(TrainingsParticipants participantDel)
        //{
        //    if (participantDel != null)
        //    {
        //        TraningsParticipants.DeleteObject(participantDel);
        //        DB.Save();
        //    }
        //}

        //#endregion

        //#region TrainingsRequests

        ///// <summary>
        ///// Добавление заявки в базу
        ///// </summary>
        ///// <param name="trainingsRequestsItem"></param>
        //public static void TrainingsRequestsInsert(TrainingsRequests trainingsRequestsItem)
        //{
        //    if (trainingsRequestsItem.Comments == null)
        //        trainingsRequestsItem.Comments = "";
        //    if (trainingsRequestsItem.Company == null)
        //        trainingsRequestsItem.Company = "";
        //    if (trainingsRequestsItem.ContactEmail == null)
        //        trainingsRequestsItem.ContactEmail = "";
        //    if (trainingsRequestsItem.ContactName == null)
        //        trainingsRequestsItem.ContactName = "";
        //    if (trainingsRequestsItem.ContactPhone == null)
        //        trainingsRequestsItem.ContactPhone = "";
            
        //    Entities.TrainingsRequests.AddObject(trainingsRequestsItem);
        //    DB.Save();
        //}

        ///// <summary>
        ///// Заполняет пустыми строками нулевые значения
        ///// </summary>
        ///// <param name="requestItem"></param>
        //public static void FillTrainingsRequest(TrainingsRequests requestItem)
        //{
        //    if (requestItem == null) return;
        //    if (requestItem.ContactName == null)
        //        requestItem.ContactName = "";
        //    if (requestItem.ContactPhone == null)
        //        requestItem.ContactPhone = "";
        //    if (requestItem.ContactEmail == null)
        //        requestItem.ContactEmail = "";
        //    if (requestItem.Comments == null)
        //        requestItem.Comments = "";
        //    if (requestItem.Company == null)
        //        requestItem.Company = "";
        //    if (requestItem.Reason == null)
        //        requestItem.Reason = "";
        //}
        
        //#endregion

        //#region TraningsParticipants

        ///// <summary>
        ///// Добавление участника к заявке
        ///// </summary>
        ///// <param name="traningsParticipantItem"></param>
        ///// <param name="traningsRequestId"></param>
        //public static void TraningsParticipantsAddToRequest(TrainingsParticipants traningsParticipantItem, int traningsRequestId)
        //{
        //    if (traningsParticipantItem.IdUser == null)
        //        traningsParticipantItem.IdUser = "";
        //    if (traningsParticipantItem.ParticipantName == null)
        //        traningsParticipantItem.ParticipantName = "";
        //    if (traningsParticipantItem.ParticipantPosition == null)
        //        traningsParticipantItem.ParticipantPosition = "";
        //    traningsParticipantItem.IdTrainingsRequest = traningsRequestId;
        //    Entities.TrainingsParticipants.AddObject(traningsParticipantItem);
        //    DB.Save();
        //}

        ///// <summary>
        ///// Добавление списка участников к заявке
        ///// </summary>
        ///// <param name="traningsParticipantList"></param>
        ///// <param name="traningsRequestItem"></param>
        ///// <returns></returns>
        //public static TrainingsRequests TraningsParticipantsListAddToRequest(List<TrainingsParticipants> traningsParticipantList, TrainingsRequests traningsRequestItem)
        //{
        //    foreach (var participantItem in traningsParticipantList)
        //    {
        //        if(participantItem != null)
        //        {
        //            if(participantItem.IdUser == null)
        //                participantItem.IdUser = "";
        //            if (participantItem.ParticipantName == null)
        //                participantItem.ParticipantName = "";
        //            if (participantItem.ParticipantPosition == null)
        //                participantItem.ParticipantPosition = "";
        //            traningsRequestItem.TrainingsParticipants.Add(participantItem);
        //        }
        //    }
        //    return traningsRequestItem;
        //}

        //#endregion

        //#region TrainingsRequestsExt

        ////public static Dictionary<int, TrainingsRequestsExt> TrainingsRequestsExtDictionary
        ////{
        ////    get
        ////    {
        ////        if (_trainingsRequestsExtDictionary == null)
        ////            _trainingsRequestsExtDictionary = new Dictionary<int, TrainingsRequestsExt>();
        ////        return _trainingsRequestsExtDictionary;
        ////    }
        ////    set { _trainingsRequestsExtDictionary = value; }
        ////}
        ////private static Dictionary<int, TrainingsRequestsExt> _trainingsRequestsExtDictionary;
        ////public static void TrainingsParticipantsAdd(TrainingsParticipants participant, int dictionaryKey)
        ////{
        ////    var requestsExt = InternalClasses.TrainingsRequestsExtDictionary[dictionaryKey];
        ////    if (requestsExt != null)
        ////    {
        ////        if (requestsExt.ParticipantsList.Count > 0)
        ////        {
        ////            var id = requestsExt.ParticipantsList.Max(p => p.IdTrainingsParticipant);
        ////            participant.IdTrainingsParticipant = ++id;
        ////            requestsExt.ParticipantsList.Add(participant);
        ////            return;
        ////        }
        ////        participant.IdTrainingsParticipant = 1;
        ////        requestsExt.ParticipantsList.Add(participant);
        ////        return;
        ////    }
        ////}
        ////public static void TrainingsParticipantsDel(TrainingsParticipants participant, int dictionaryKey)
        ////{
        ////    var requestsExt = InternalClasses.TrainingsRequestsExtDictionary[dictionaryKey];
        ////    if (requestsExt != null)
        ////    {
        ////        foreach (var item in requestsExt.ParticipantsList)
        ////        {
        ////            if (item.IdTrainingsParticipant == participant.IdTrainingsParticipant)
        ////            {
        ////                requestsExt.ParticipantsList.Remove(item);
        ////                break;
        ////            }
        ////        }
        ////    }
        ////}
        ////public static void TrainingsParticipantsEdit(TrainingsParticipants participant, int dictionaryKey)
        ////{
        ////    var requestsExt = InternalClasses.TrainingsRequestsExtDictionary[dictionaryKey];
        ////    if (requestsExt != null)
        ////    {
        ////        foreach (var item in requestsExt.ParticipantsList)
        ////        {
        ////            if (item.IdTrainingsParticipant == participant.IdTrainingsParticipant)
        ////            {
        ////                item.ParticipantName = participant.ParticipantName;
        ////                item.ParticipantPosition = participant.ParticipantPosition;
        ////                item.IdTrainingsParticipantsStatus = participant.IdTrainingsParticipantsStatus;
        ////                break;
        ////            }
        ////        }
        ////    }
        ////}

        /////// <summary>
        /////// Сохранение расширеной заявки в базу
        /////// </summary>
        /////// <param name="requestExt"></param>
        ////public static void TrainingsRequestsExtInsert(TrainingsRequestsExt requestExt)
        ////{
        ////    requestExt.Request = DB.TraningsParticipantsListAddToRequest(requestExt.ParticipantsList, requestExt.Request);
        ////    DB.TrainingsRequestsInsert(requestExt.Request);
        ////}

        /////// <summary>
        /////// Заполняет пустыми строками нулевые значения
        /////// </summary>
        /////// <param name="requestsExt"></param>
        ////public static void FillTrainingsRequestExt(TrainingsRequestsExt requestsExt)
        ////{
        ////    if (requestsExt != null)
        ////    {
        ////        DB.FillTrainingsRequest(requestsExt.Request);
        ////    }
        ////}

        /////// <summary>
        /////// Обновление расширенной заявки в базе
        /////// </summary>
        /////// <param name="requestExt"></param>
        ////public static void TrainingsRequestsExtUpdate(TrainingsRequestsExt requestExt)
        ////{
        ////    DB.TrainingsRequestUpdate(requestExt.Request, requestExt.ParticipantsList);
        ////}

        //#endregion

        //#region Contacts

        ///// <summary>
        ///// Коллекция всех контактов
        ///// </summary>
        //public static IEnumerable<Contacts> Contacts
        //{
        //    get { return DB.Entities.Contacts; }
        //}

        ///// <summary>
        ///// Получение контакта по Id
        ///// </summary>
        ///// <param name="idContact">Идентификатор</param>
        ///// <returns>Контакт</returns>
        //public static Contacts GetContactById(int idContact)
        //{
        //    return Contacts.Single(p => p.IdContact == idContact);
        //}

        /////// <summary>
        /////// Возвращает список контактов заполненными полями: ФИО, эл. почта, телефон, логин и пароль
        /////// </summary>
        /////// <returns></returns>
        ////public static List<Contacts> GetFullDefinedContacts()
        ////{
        ////    var result = new List<Contacts>();

        ////    foreach (var item in Contacts)
        ////    {
        ////        if (!(String.IsNullOrEmpty(item.Name)) 
        ////            && !(String.IsNullOrEmpty(item.Phone)) 
        ////            && !(String.IsNullOrEmpty(item.Email))
        ////            && !(String.IsNullOrEmpty(item.LoginName))
        ////            && !(String.IsNullOrEmpty(item.Pass))
        ////            )
        ////        {
        ////            if (!result.Contains(item))
        ////                result.Add(item);
        ////        }
        ////    }
        ////    return result;
        ////}

        /////// <summary>
        /////// Возвращает контакт по логину или null(чего быть не должно т.к. пользователь авторизовался)
        /////// </summary>
        /////// <param name="loginName"></param>
        /////// <returns></returns>
        ////public static Contacts GetContactByLoginName(string loginName)
        ////{
        ////    var contactsList = GetFullDefinedContacts();
        ////    if(contactsList!=null)
        ////        if(contactsList.Count > 0)
        ////        {
        ////            foreach (var item in contactsList)
        ////            {
        ////                if (item.LoginName.Trim().ToUpper() == loginName.Trim().ToUpper())
        ////                    return item;
        ////            }
        ////        }
        ////    return null;
        ////}

        //#endregion

        //#region TrainingsRequestsExt
        
        //public static Dictionary<int, TrainingsRequestsExt> TrainingsRequestsExtDictionary
        //{
        //    get
        //    {
        //        if (_trainingsRequestsExtDictionary == null)
        //            _trainingsRequestsExtDictionary = new Dictionary<int, TrainingsRequestsExt>();
        //        return _trainingsRequestsExtDictionary;
        //    }
        //    set { _trainingsRequestsExtDictionary = value; }
        //}

        //private static Dictionary<int, TrainingsRequestsExt> _trainingsRequestsExtDictionary;

        //public static void TrainingsParticipantsAdd(TrainingsParticipants participant, int dictionaryKey)
        //{
        //    var requestsExt = DB.TrainingsRequestsExtDictionary[dictionaryKey];
        //    if (requestsExt != null)
        //    {
        //        if (requestsExt.ParticipantsList.Count > 0)
        //        {
        //            var id = requestsExt.ParticipantsList.Max(p => p.IdTrainingsParticipant);
        //            participant.IdTrainingsParticipant = ++id;
        //            requestsExt.ParticipantsList.Add(participant);
        //            return;
        //        }
        //        participant.IdTrainingsParticipant = 1;
        //        requestsExt.ParticipantsList.Add(participant);
        //        return;
        //    }
        //}

        //public static void TrainingsParticipantsDel(TrainingsParticipants participant, int dictionaryKey)
        //{
        //    var requestsExt = DB.TrainingsRequestsExtDictionary[dictionaryKey];
        //    if (requestsExt != null)
        //    {
        //        foreach (var item in requestsExt.ParticipantsList)
        //        {
        //            if (item.IdTrainingsParticipant == participant.IdTrainingsParticipant)
        //            {
        //                requestsExt.ParticipantsList.Remove(item);
        //                break;
        //            }
        //        }
        //    }
        //}

        //public static void TrainingsParticipantsEdit(TrainingsParticipants participant, int dictionaryKey)
        //{
        //    var requestsExt = DB.TrainingsRequestsExtDictionary[dictionaryKey];
        //    if (requestsExt != null)
        //    {
        //        foreach (var item in requestsExt.ParticipantsList)
        //        {
        //            if (item.IdTrainingsParticipant == participant.IdTrainingsParticipant)
        //            {
        //                item.ParticipantName = participant.ParticipantName;
        //                item.ParticipantPosition = participant.ParticipantPosition;
        //                break;
        //            }
        //        }
        //    }
        //}

        ///// <summary>
        ///// Сохранение расширеной заявки в базу
        ///// </summary>
        ///// <param name="requestExt"></param>
        //public static void TrainingsRequestsExtInsert(TrainingsRequestsExt requestExt)
        //{
        //    requestExt.Request = DB.TraningsParticipantsListAddToRequest(requestExt.ParticipantsList, requestExt.Request);
        //    DB.TrainingsRequestsInsert(requestExt.Request);
        //}

        ///// <summary>
        ///// Заполняет пустыми строками нулевые значения
        ///// </summary>
        ///// <param name="requestsExt"></param>
        //public static void FillTrainingsRequestExt(TrainingsRequestsExt requestsExt)
        //{
        //    if (requestsExt != null)
        //    {
        //        DB.FillTrainingsRequest(requestsExt.Request);
        //    }
        //}

        //#endregion
    }
}